﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modele;

namespace Guitar
{

    /* Classe de gestion de toutes les options de l'application */

    [Serializable]
    public class Options
    {

        /***************** GESTION LANGUES *****************/

        public enum Lang { Fr, En };
        public Lang LangueAffichage = Lang.Fr;
        public Note.Langue LangueNotationMusicale = Note.Langue.Fr;


        /***************** GESTION AUDIO *****************/
        // On Gére une sous classe pour génerer un Xml plus propre
        [Serializable]
        public class AudioStruct
        {

            public FMOD.OUTPUTTYPE MoteurRendu = FMOD.OUTPUTTYPE.DSOUND; // Moteur de rendu windows direct Sound
            public int DriverLecture = 0;
            public int DriverEnregistrement = 0;

            public float VolumeMaster = 0.6f; // Volume global de l'application
            public float VolumeModules = 0.5f;
            public float VolumeLecteurPartion = 0.5f;
        }

        public AudioStruct Audio = new AudioStruct();


        /***************** GESTION AFFICHAGE *****************/

        [Serializable]
        public class AffichageStruct
        {
            public int ZoomParDefault = 100;
            public int Width = 800; // Largeur de la fenêtre
            public int Height = 600; // Hauteur de la fenêtre
            public Boolean IsFullScreen = false;
            public Boolean IsNotationClassicEnabled = true;
            public enum ModAffichage { normal, Livre };

            public ModAffichage ModeAffichage = ModAffichage.Livre;
        }


        public AffichageStruct Affichage = new AffichageStruct();




        /* 
         * Classe des options selectionables via le rubban 
         * ( enregistrement automatique des options à la fermeture du logiciel
         */
        [Serializable]
        public class RubbanOptionStruct
        {
            public bool IsClassicNotationEnabled = true;

        }


        public RubbanOptionStruct Ruban = new RubbanOptionStruct();
        public Options()
        {
        }

        public void AppliquerOptions()
        {
        }



    }
}
